home *** CD-ROM | disk | FTP | other *** search
/ United Public Domain Gold 3 / United Public Domain Gold 3.iso / games / pg326.dms / pg326.adf / darts2.Bak / darts2.amosSourceCode < prev    next >
AMOS Source Code  |  1989-05-09  |  18KB  |  675 lines

  1. ' ********************************** 
  2. ' *** PROGRAM BY PAUL WHITEHEAD  *** 
  3. ' ************ DARTS *************** 
  4. ' ********************************** 
  5. Cls 0
  6. Double Buffer 
  7. Dim TL(2) : Dim SET(2) : Dim LEG(2) : Dim D(60) : Dim TU(8)
  8. Dim N$(10) : Dim AV3(4) : Dim HE(2) : Dim DA(12)
  9. Global X,Y,BB,SC,TL(),PL,SK,PR,N$(),OP,MIS,TURN,LEG(),SET(),BMUL,WIN,SCB,MISS
  10. Global SET,LEG,TDS,HIT,MIS,LHIT,D(),NT,AIM,TM,CD#,COMP,CR,CX,CY,FIN,B1,B2,B3
  11. Global FT,CSS,FTL,CSL,NSB,HP,AV3(),HE(),DA(),IS,TU(),TU,RD,GM,CG,IG,DB,P1
  12. PL=1 : SK=1 : PR=0 : OP=2 : SET=3 : LEG=3 : DB=0
  13. Goto SETUP
  14. Stop 
  15. Procedure SETUP
  16.    N$(1)="Player 1" : N$(2)="Player 2"
  17.    N$(3)="Phil" : N$(4)="John" : N$(5)="Eric"
  18.    N$(6)="Mark" : N$(7)="Jocky" : N$(8)="Richard"
  19.    N$(9)="Peter" : N$(10)="Paul"
  20.    Hide On 
  21.    Close Editor 
  22.    Flash Off 
  23.    Get Rom Fonts 
  24.    Screen Open 1,320,256,64,Lowres : Cls 0
  25.    Screen Open 3,512,256,16,Lowres : Cls 0
  26.    Screen Open 2,512,256,16,Lowres : Cls 0
  27.    Screen To Front 0 : Cls 0 : Screen 0
  28. End Proc
  29. SETUP:
  30. S3=0
  31. SETUP
  32. DART
  33. TITLE
  34. Pack 0 To 3
  35. 'Shift Up 15,5,15,1
  36. Goto QU
  37. NEW:
  38. While Mouse Key<>1
  39. Wend 
  40. Gosub EHELP
  41. While Mouse Key<>1
  42. Wend 
  43. If TU=1 Then Goto TU
  44. QU:
  45. TU=0
  46. RD=0 : GM=0
  47. Show On 
  48. IS=0
  49. MENU
  50. If IS=1 Then Gosub EHELP : IS=0 : Goto QU
  51. If TU=0 Then Goto CONT
  52. '
  53. TU:
  54. Do 
  55. Shoot 
  56. TURN
  57. SR=1 : Gosub EHELP : SR=0
  58. If WIN>0 Then While Mouse Key<>0 : Wend : While Mouse Key<>1 : Wend : TU=0 : Screen 2 : Goto QU
  59. Wait 2
  60. If CG=0 Then BOARD : Screen To Back 3 : Screen Hide 3 : Screen To Front 1 : Screen Show 1 : RESTART : Goto GAME
  61. Loop 
  62. '
  63. CONT:
  64. BOARD
  65. RESTART
  66. Goto GAME
  67. Procedure BOARD
  68.   If DB=1 Then Pop Proc
  69.   Load Iff "DART:Screens/BOARD1",1
  70.    DB=1
  71. End Proc
  72. Procedure INFO
  73.   Load Iff "DART:Screens/info",3
  74. End Proc
  75. Procedure TITLE
  76.   Load Iff "dart:screens/title",2
  77. End Proc
  78. Procedure DART
  79.   Load "dart:sprites/ds1.abk"
  80. End Proc
  81. Procedure AIM
  82.   Sprite 2,X Mouse,Y Mouse,2
  83.   Bob 1,X Screen(X Mouse)+32,Y Screen(Y Mouse)+32,10 : Update 
  84.   Rem Main loop
  85.   Do 
  86.     Rem Move sprite along with mouse 
  87.     Sprite 1,X Mouse,Y Mouse,1
  88.     Rem Move bob 
  89.     Bob 1,X Screen(X Mouse)+32,Y Screen(Y Mouse)+32,10
  90.     Locate 0,1 : Print "                        "
  91.     Locate 0,1 : Print X Mouse;" ";Y Mouse
  92.     If Mouse Key=1 Then Update 
  93.     If Mouse Key=2 Then Stop 
  94.     Wait Vbl 
  95.   Loop 
  96. End Proc
  97. '
  98. POSITION:
  99. COMP=0
  100. If PL=1 and TURN=2 Then COMP=1
  101. If COMP=1 or HP=1 Then COMPO
  102. If COMP=1 Then Goto NHP
  103. If HP=1 Then Paper 47 : Locate 0,29 : Centre "                           "
  104. If HP=1 and TM=1 Then Print At(18,29);AIM
  105. If HP=1 and TM=3 Then Print At(14,29);"Treble ";AIM
  106. If HP=1 and TM=2 Then Print At(14,29);"Double ";AIM
  107. NHP:
  108. POSITION
  109. Return 
  110. '
  111. '
  112. GAME:
  113. If FON=1 Then Goto NSWAP
  114. GAME
  115. NSWAP:
  116. FON=0
  117. Do 
  118.    CSL=0
  119.    BB=0 : SC=0 : TL=0
  120.    Wait 10
  121.    While Mouse Key<>1
  122.       If Key State(69)=True Then Goto QU
  123.       If Mouse Key=2 Then K=0 : Gosub HELP
  124.       If Key State(95)=True Then K=1 : Gosub HELP
  125.    Wend 
  126.    If TL(1)<2 or TL(2)<2 Then Goto FINO
  127.    SCB=TL(TURN)
  128.    RESULTS
  129.    Goto CONTROL
  130. Loop 
  131. '  
  132. FINO:
  133. If TL(TURN)<0 Then TL(TURN)=SCB : Goto GAME
  134. If TL(TURN)=1 Then TL(TURN)=SCB : Goto GAME
  135. If TL(TURN)=0 and(HIT<>5 and HIT<>1) Then TL(TURN)=SCB : Goto GAME
  136. WIN=NT
  137. If(HIT=5 or HIT=1) and TL(TURN)=0 Then WIN=TURN
  138. LEG(WIN)=LEG(WIN)+1
  139. CSS=0
  140. If LEG/2<LEG(WIN) Then LEG(1)=0 : LEG(2)=0 : SET(WIN)=SET(WIN)+1 : CSS=1
  141. SC=0 : RESULTS
  142. If SET/2<SET(WIN) Then FIN=1 : RESULTS : Goto NEW
  143. For T=1 To 2
  144. TL(T)=501 : Next T : 
  145. CSL=1
  146. Goto GAME
  147. '
  148. HELP:
  149. If K=1 Then Wait Key 
  150. EHELP:
  151. If S3=0 Then INFO
  152. Screen To Back 1
  153. Screen To Front 3
  154. Screen Hide 1 : Screen Show 3 : Screen 3
  155. Pen 0 : Paper 2
  156. '
  157. If SR=0 Then Goto NR
  158. '
  159. Bar 110,48 To 515,130
  160. G=0
  161. Repeat 
  162. Inc G
  163. If TU(G*2)<11 and TU((G*2)-1)>10 Then Locate 15,7+G : Centre N$(TU(G*2))+" beat "+N$(TU(G*2-1)-100)
  164. If TU(G*2)>10 and TU((G*2)-1)<11 Then Locate 15,7+G : Centre N$(TU((G*2)-1))+" beat  "+N$(TU(G*2)-100)
  165. Until G=4
  166. If TU(1)<11 and TU(2)<11 Then Locate 15,8 : Centre N$(TU(1))+" v "+N$(TU(2))
  167. If TU(3)<11 and TU(4)<11 Then Locate 15,9 : Centre N$(TU(3))+" v "+N$(TU(4))
  168. If TU(5)<11 and TU(6)<11 Then Locate 15,10 : Centre N$(TU(5))+" v "+N$(TU(6))
  169. If TU(7)<11 and TU(8)<11 Then Locate 15,11 : Centre N$(TU(7))+" v "+N$(TU(8))
  170. Locate 0,0 : For N=1 To 8 : Print TU(N) : Next N
  171. If WIN>0 Then Locate 15,14 : Centre "The Winner is "+N$(TU(WIN)) : TU=0
  172. Goto ENF
  173. NR:
  174. Under On : Print At(15,6);" Instructions for 501 " : Under Off 
  175. Print At(15,8);"The aim of this Game is to decend from 501 to 0."
  176. Print At(15,9);"In order to win the game you must finish with a"
  177. Print At(15,10);"Double or a Bulls eye. If you Fail to finish with "
  178. Print At(15,11);"a Double or a bulls eye the you could go bust and"
  179. Print At(15,12);"fail to win then game."
  180. If IS=1 Then Print At(15,13);"In the game the left mouse button fires the dart."
  181. If IS=1 Then Print At(15,14);"The right mouse button calls up information. "
  182. Paper 3
  183. If TU=0 Then P1=1
  184. Under On : Print At(6,21);N$(P1);At(43,21);N$(OP+1) : Under Off 
  185. AV1=0 : AV2=0 : A1=0 : A2=0 : A3=0 : A4=0 : A5=0 : A6=0
  186. If DA(1)>0 Then A1=DA(4)/DA(1) : If DA(2)>0 Then A2=DA(5)/DA(2) : If DA(3)>0 Then A3=DA(6)/DA(3)
  187. If DA(7)>0 Then A4=DA(10)/DA(7)
  188. If DA(8)>0 Then A5=DA(11)/DA(8)
  189. If DA(9)>0 Then A6=DA(12)/DA(9)
  190. If AV3(3)>0 Then AV1=AV3(1)/AV3(3)
  191. If AV3(4)>0 Then AV2=AV3(2)/AV3(4)
  192. Print At(6,23);"3 Dart Av   :-";AV1;"    ";At(43,23);"3 Dart Av   :-";AV2;"     "
  193. Print At(6,24);"1st Dart Av :-";A1;"    ";At(43,24);"1st Dart Av :-";A4;"    "
  194. Print At(6,25);"2nd Dart Av :-";A2;"    ";At(43,25);"2nd Dart Av :-";A5;"    "
  195. Print At(6,26);"3rd Dart Av :-";A3;"    ";At(43,26);"3rd Dart Av :-";A6;"    "
  196. Print At(6,27);"180's       :-";HE(1);"   ";At(43,27);"180's       :-";HE(2);"    "
  197. ENF:
  198. While Mouse Key<>0 : Wend 
  199. While Mouse Key<>1 : Wend 
  200. S3=1
  201. If SR=1 Then Return 
  202. Screen To Back 3
  203. Screen To Front 1
  204. Screen Hide 3
  205. Screen 1 : Screen Show 1
  206. Return 
  207. '
  208. CONTROL:
  209. TDS=0 : BB=0
  210. Do 
  211.    BB=BB+1
  212.    If TDS=180 Then Inc HE(TURN)
  213.    If BB<4 Then Goto NOFIN
  214.    Inc AV3(2+TURN) : AV3(TURN)=AV3(TURN)+TDS
  215.    Goto GAME
  216.    '
  217.    NOFIN:
  218.    If BB=1 Then Bob Off D(1) : Bob Off D(2) : Bob Off D(3)
  219.    SC=0 : BMUL=0
  220.    Gosub POSITION
  221.    SCORE
  222.    TDS=TDS+SC
  223.    D(BB)=BB
  224.    If MISS=1 Then D(BB)=0
  225.    RESULTS
  226.    FON=0
  227.    If TL(1)<2 or TL(2)<2 and BB<3 Then Goto FINO2
  228. Loop 
  229. FINO2:
  230. FON=1
  231. For N=BB+1 To 3
  232. Bob N,300,300,2 : Next N
  233. BB=4 : 
  234. Goto GAME
  235. '
  236. '
  237. Procedure MENU
  238.    Screen To Back 1
  239.    Screen To Front 2
  240.    Screen Show 2
  241.    Screen 2
  242.    Show On 
  243.    Paper 0
  244.    Locate 0,31 : Centre "Select Option from Menu"
  245.    Ink 1 : Pen 4
  246.    OPTIONS:
  247.    Menu$(1)=" Options "
  248.    Menu$(1,1)="One Player"
  249.    If PL=1 Then Menu$(1,1)="One Player <-"
  250.    Menu$(1,2)="Two Player"
  251.    If PL=2 Then Menu$(1,2)="Two Player <-"
  252.    Menu$(2)="Level "
  253.    Menu$(2,1)="Amateur"
  254.    If SK=1 Then Menu$(2,1)="Amateur      <-"
  255.    Menu$(2,2)="Professional"
  256.    If SK=2 Then Menu$(2,2)="Professional <-"
  257.    Menu$(3)="Game "
  258.    Menu$(3,1)="Start"
  259.    Menu$(3,2)="Practice"
  260.    Menu$(3,3)="Tournament"
  261.    Menu$(5)="Opponent "
  262.    For N=1 To 9
  263.       Menu$(5,N)=N$(N+1) : If N=OP Then Menu$(5,N)=N$(N+1)+" <-"
  264.    Next N
  265.    Menu$(4)="Setup "
  266.    Menu$(4,1)="Legs"
  267.    Menu$(4,2)="Sets"
  268.    Menu$(4,1,1)="3 Legs"
  269.    If LEG=3 Then Menu$(4,1,1)="3 Legs <-"
  270.    Menu$(4,1,2)="5 Legs"
  271.    If LEG=5 Then Menu$(4,1,2)="5 Legs <-"
  272.    Menu$(4,1,3)="7 Legs"
  273.    If LEG=7 Then Menu$(4,1,3)="7 Legs <-"
  274.    Menu$(4,2,1)="1 Sets"
  275.    If SET=1 Then Menu$(4,2,1)="1 Sets <-"
  276.    Menu$(4,2,2)="3 Sets"
  277.    If SET=3 Then Menu$(4,2,2)="3 Sets <-"
  278.    Menu$(4,2,3)="5 Sets"
  279.    If SET=5 Then Menu$(4,2,3)="5 Sets <-"
  280.    Menu$(4,2,4)="7 Sets"
  281.    If SET=7 Then Menu$(4,2,4)="7 Sets <-"
  282.    Menu$(4,2,5)="9 Sets"
  283.    If SET=9 Then Menu$(4,2,5)="9 Sets <-"
  284.    Menu$(4,2,6)="11 Sets"
  285.    If SET=11 Then Menu$(4,2,6)="11 Sets<-"
  286.    '
  287.    Menu$(1,3)="Help On"
  288.    Menu$(1,4)="Instructions"
  289.    If HP=0 Then Menu$(1,3)="Help off"
  290.    On Menu Goto SELECT,SELECT,GAM,SETU,OPER
  291.    On Menu On 
  292.    Menu On 
  293.    Wait Key 
  294.    Goto OPTIONS
  295.    SELECT:
  296.    If Choice(2)=3 and HP=1 Then HP=0 : Goto GIT
  297.    If Choice(2)=3 and HP=0 Then HP=1 : Goto GIT
  298.    If Choice(2)=4 Then IS=1 : Pop Proc
  299.    If Choice(1)=1 Then PL=Choice(2) : If PL=2 Then OP=1
  300.    If Choice(1)=1 Then If PL=1 Then OP=2
  301.    If Choice(1)=2 Then SK=Choice(2)
  302.    GIT:
  303.    On Menu On 
  304.    Goto OPTIONS
  305.    GAM:
  306.    TU=0 : PR=0
  307.    If Choice(2)=1 Then Pop Proc
  308.    If Choice(2)=2 Then PR=1 : Pop Proc
  309.    If Choice(2)=3 Then TU=1 : Pop Proc
  310.    On Menu On 
  311.    Goto OPTIONS
  312.    OPER:
  313.    OP=Choice(2) : If OP=1 Then PL=2
  314.    If OP>1 Then PL=1
  315.    On Menu On 
  316.    Goto OPTIONS
  317.    SETU:
  318.    If Choice(2)=1 Then LEG=2+((Choice(3)*2)-1)
  319.    If Choice(2)=2 Then SET=(Choice(3)*2)-1
  320.    On Menu On 
  321.    Goto OPTIONS
  322. End Proc
  323. Procedure POSITION
  324.   9 Rem----------------------width 
  325.   XW=6+SK : CX=CX : YW=8 : A=1
  326.   Ink 11 : Draw 7,7 To 193,7 : Draw 7,8 To 193,8
  327.   While Mouse Key<>0
  328.   Wend 
  329.   Repeat 
  330.     If A=1 Then Ink 0 : Plot XW,YW : Plot XW,YW-1
  331.     If A=1 and SK=2 Then Plot XW-1,YW : Plot XW-1,YW-1
  332.     If A=0 Then Ink 11 : Plot XW,YW : Plot XW,YW-1
  333.     If A=0 and SK=2 Then Plot XW+1,YW : Plot XW+1,YW-1
  334.     If A=1 Then XW=XW+SK : If XW>192 Then A=0 : If COMP=1 Then CX=CX+1
  335.     If A=0 Then XW=XW-SK : If XW<10 Then A=1
  336.   Until(Mouse Key=1 and COMP=0) or(CX=XW and COMP=1)
  337.   Rem --------------------hight
  338.   While Mouse Key<>0
  339.   Wend 
  340.   Ink 11 : Draw 201,14 To 201,201 : Draw 200,14 To 200,201
  341.   XH=200 : YH=14+SK : CY=CY : A=1
  342.   Repeat 
  343.     If A=1 Then Ink 0 : Plot XH,YH : Plot XH+1,YH
  344.     If A=1 and SK=2 Then Plot XH,YH-1 : Plot XH+1,YH-1
  345.     If A=0 Then Ink 11 : Plot XH,YH : Plot XH+1,YH
  346.     If A=0 and SK=2 Then Plot XH,YH+1 : Plot XH+1,YH+1
  347.     If A=1 Then YH=YH+SK : If YH>201-SK Then A=0 : If COMP=1 Then CY=CY+1
  348.     If A=0 Then YH=YH-SK : If YH<15+SK Then A=1
  349.   Until(Mouse Key=1 and COMP=0) or(CY=YH and COMP=1)
  350.   Rem ---------------------throw 
  351.   '
  352.   MISS=0
  353.   C=Point(XW,YH) : R=Rnd(20) : R2=Rnd(80)
  354.   If C=33 and R=0 Then Goto MISS
  355.   If BB=2 and B1=1 Then If X Bob(1)=XW-16 and Y Bob(1)=YH-14 and R2<10 Then Goto MISS
  356.   If BB=3 and B1=1 Then If X Bob(1)=XW-16 and Y Bob(1)=YH-14 and R2<10 Then Goto MISS
  357.   If BB=3 and B2=1 Then If X Bob(2)=XW-16 and Y Bob(2)=YH-14 and R2<10 Then Goto MISS
  358. '
  359.   ' Show On  
  360.   ' While Mouse Key<>0 : Wend  
  361.   ' While Mouse Key<>1 
  362.   ' YH=Y Screen(Y Mouse) 
  363.   ' XW=X Screen(X Mouse) 
  364.   ' Wend 
  365. '
  366.   Goto HIT
  367.   MISS:
  368.   If BB=1 Then B1=0
  369.   If BB=2 Then B2=0
  370.   If BB=3 Then B3=0
  371.   MISS=1 : Shoot 
  372.   RN=Rnd(1)+1
  373.   Bob BB,XW-16,YH-14,RN : Wait 20 : Bob Off BB
  374.   For N=(YH-5) To 250 : Hot Spot 3,16,16
  375.   Bob 4,XW+4,(YH-14)+N,3 : Next N : Bob Off 4 : Goto ENY
  376.   HIT:
  377.   RN=Rnd(1)+1
  378.  'Hot Spot BB,16,14   
  379.  'Bob BB,XW,YH,RN 
  380.   Bob BB,XW-16,YH-14,RN
  381.   If BB=1 Then B1=1
  382.   If BB=2 Then B2=1
  383.   If BB=3 Then B3=1
  384.   Shoot 
  385.   ENY:
  386.   X=XW : Y=YH
  387. End Proc
  388. Procedure SCORE
  389.    A=X : B=Y
  390.    A=-100+A
  391.    B=107-B
  392.    X#=A : Y#=B
  393.    R=Sqr((A*A)+(B*B))
  394.    If X#=0 Then X#=1
  395.    If Y#=0 Then Y#=1
  396.    D#=Y#/X#
  397.    Degree 
  398.    D#=Atan(D#)
  399.    If X#>0 and Y#>0 Then D#=D#
  400.    If X#<0 and Y#>0 Then D#=180+D#
  401.    If X#<0 and Y#<0 Then D#=180+D#
  402.    If X#>0 and Y#<0 Then D#=360+D#
  403.    '  SCORE 
  404.    If D#>351 or D#<=9 Then SC=6
  405.    If D#>9 and D#<=27 Then SC=13
  406.    If D#>27 and D#<=45 Then SC=4
  407.    If D#>45 and D#<=63 Then SC=18
  408.    If D#>63 and D#<=81 Then SC=1
  409.    If D#>81 and D#<=99 Then SC=20
  410.    If D#>99 and D#<=117 Then SC=5
  411.    If D#>117 and D#<=135 Then SC=12
  412.    If D#>135 and D#<=153 Then SC=9
  413.    If D#>153 and D#<=171 Then SC=14
  414.    If D#>171 and D#<=189 Then SC=11
  415.    If D#>189 and D#<=207 Then SC=8
  416.    If D#>207 and D#<=225 Then SC=16
  417.    If D#>225 and D#<=243 Then SC=7
  418.    If D#>243 and D#<=261 Then SC=19
  419.    If D#>261 and D#<=279 Then SC=3
  420.    If D#>279 and D#<=297 Then SC=17
  421.    If D#>297 and D#<=315 Then SC=2
  422.    If D#>315 and D#<=333 Then SC=15
  423.    If D#>333 and D#<=351 Then SC=10
  424.    BMUL=SC
  425.    HIT=3
  426.    If R<4 Then SC=50 : HIT=1
  427.    If R>=4 and R<=8 Then SC=25 : HIT=2
  428.    If R=>41 and R<48 Then SC=SC*3 : HIT=4
  429.    If R=>69 and R<76 Then SC=SC*2 : HIT=5
  430.    If R=>76 Then SC=0 : HIT=6
  431.    If MISS=1 Then SC=0 : HIT=6
  432.    If TURN=1 Then Inc DA(BB) : DA(3+BB)=DA(3+BB)+SC
  433.    If TURN=2 Then Inc DA(6+BB) : DA(9+BB)=DA(9+BB)+SC
  434. End Proc
  435. Procedure TURN
  436.    If GM>0 Then Goto SKIT
  437.    For N=1 To 8 : TU(N)=2+N : Next N
  438.    TU(1)=1 : If PL=2 Then TU(2)=2
  439.    N=0
  440.    Repeat 
  441.    Inc N : A=Rnd(7)+1 : B=Rnd(7)+1
  442.    Swap TU(A),TU(B)
  443.    Until N=20
  444.    'For N=1 To 8 : Print TU(N) : Next N 
  445. '
  446.   SKIT:
  447.    WIN=0
  448.    If RD=3 and GM=1 Then For N=1 To 8 : If TU(N)<100 Then WIN=N
  449.    If RD=3 and GM=1 Then Next N : Pop Proc
  450.    If RD>0 and CG=0 Then If SET(1)<SET(2) Then TU((GM*2)-1)=TU((GM*2)-1)+100
  451.    If RD>0 and CG=0 Then If SET(1)>SET(2) Then TU(GM*2)=TU(GM*2)+100
  452.    XGAM:
  453.    Inc GM
  454.    If RD=1 and GM=5 Then GM=1
  455.    If RD=2 and GM=3 Then GM=1
  456.    If RD=3 and GM=2 Then Pop Proc
  457.    If GM=1 Then Inc RD
  458.    N=0
  459.    If GM>1 Then Goto SKI1
  460.    Repeat 
  461.    Inc N
  462.    For A=1 To 7
  463.    If TU(A)>10 Then Swap TU(A),TU(A+1)
  464.    Next A
  465.    Until N=20
  466.    SKI1:
  467. '
  468.    NTUN:
  469.     CG=0 : P1=TU((GM*2)-1) : P2=TU(GM*2) : If P1>2 and P2>2 Then CG=1
  470.    If CG=0 Then Goto NCO
  471.    Repeat 
  472.    A=Rnd(P1) : B=Rnd(P2)
  473.    Until A<>B
  474.    If A<B Then TU((GM*2)-1)=TU((GM*2)-1)+100 : Pop Proc
  475.    If A>B Then TU(GM*2)=TU(GM*2)+100 : Pop Proc
  476.    NCO:
  477.    If P2=1 or(P2=2 and P1>1) Then Swap P1,P2 : Swap TU(GM*2),TU((GM*2)-1)
  478.    OP=P2-1
  479.    If OP<>2 Then PL=1
  480.    If P1=1 and P2=2 Then PL=2
  481. End Proc
  482. Procedure RESTART
  483.    FIN=0 : CSS=0 : CSL=0
  484.    Hide On 
  485.    Screen To Back 3
  486.    Screen To Back 2
  487.    Screen To Front 1
  488.    Screen Hide 3 : Screen Hide 2
  489.    Screen Show 1 : Screen 1
  490. '
  491.    For T=1 To 2
  492.    TL(T)=501 : SET(T)=0 : LEG(T)=0 : HE(T)=0 : Next T
  493.    For T=1 To 4 : AV3(T)=0 : Next T
  494.    For T=1 To 12 : DA(T)=0 : Next T
  495.    TURN=Rnd(1)+1
  496.    FT=TURN : FTL=TURN
  497.    If TURN=1 Then FT=2 : FTL=2 : Goto FRR
  498.    If TURN=2 Then FT=1 : FTL=1 : Goto FRR
  499.    FRR:
  500. End Proc
  501. Procedure GAME
  502.    If CSS=0 Then Goto TIT
  503.    CSL=0
  504.    If FT=1 Then FT=2 : FTL=2 : Goto IT
  505.    If FT=2 Then FT=1 : FTL=1 : Goto IT
  506.    TIT:
  507.    If CSL=0 Then Goto TITS
  508.    If FTL=1 Then FTL=2 : Goto TITS
  509.    If FTL=2 Then FTL=1 : 
  510.    TITS:
  511.    If TL(1)<1 or TL(2)<1 Then Goto IT
  512.    If TURN=1 Then TURN=2 : Goto IT
  513.    If TURN=2 Then TURN=1 : 
  514.    IT:
  515.    'Print At(1,1);"fts:";FT 
  516.    'Print At(1,2);"ftl:";FTL
  517.    If CSS=1 Then TURN=FT : CSS=0
  518.    If CSL=1 Then TURN=FTL : CSL=0
  519.    If TURN=1 Then NT=2
  520.    If TURN=2 Then NT=1
  521.    If PR=1 Then TURN=1
  522. End Proc
  523. Procedure RESULTS
  524.    TL(TURN)=TL(TURN)-SC
  525.    Paper 0 : Pen 5
  526.    Print At(30,6);"     "
  527.    Print At(30,10);"     "
  528.    Paper 47 : Locate 0,29 : Centre "                                    "
  529.    W=WIN
  530.    If COMP=1 Then W=OP+1
  531.    If TU=1 and W=1 Then W=P1
  532.    If FIN=1 Then Locate 0,29 : Centre "Winner is "+N$(W) : Pop Proc
  533.    If TU=0 Then P1=1
  534.    If TURN=1 Then Locate 0,29 : Centre N$(P1)+"  < V    "+N$(OP+1)
  535.    If TURN=2 Then Locate 0,29 : Centre N$(P1)+"    V >  "+N$(OP+1)
  536.    Pen 11
  537.    Paper 0
  538.    Print At(29,18);SET(1);At(32,18);SET(2)
  539.    Print At(29,23);LEG(1);At(32,23);LEG(2)
  540.    Print At(30,4);"Score";At(30,6);SC
  541.    Print At(30,8);"Total";At(30,10);TDS
  542.    A=0 : If TL(1)<100 Then A=1
  543.    If TL(1)<10 Then A=2
  544.    Paper 47 : Print At(2,29);"   ";At(33,29);"   "
  545.    Print At(2+A,29);TL(1);At(33,29);TL(2)
  546. End Proc
  547. Procedure COMPO
  548.    '  If BB=1 Then Locate 1,1 : Input TL(TURN)
  549.    T=TL(TURN) : D=4-BB : OT=TL(NT) : GF=0
  550.    UF=Rnd(15) : R=Rnd(19)+1 : O=Rnd(12) : OO=Rnd(20) : AIM=0
  551.    PF=0 : If TL(NT)<101 Then PF=1
  552.    '
  553.    TM=3
  554.    For N=1 To 20
  555.       If N*2=T Then AIM=N : TM=2
  556.    Next N
  557.    If T=50 and OO<15 Then AIM=50 : TM=1
  558.    If T=99 Then AIM=19 : TM=3
  559.    If T=50 and PF=1 and D=1 Then AIM=50 : TM=1
  560.    If T=50 and OO>14 Then AIM=10 : TM=1
  561.    If AIM>0 Then Goto FIN
  562.    If TL(TURN)<140 Then Goto SKIPY
  563.    '
  564.    For N=1 To 50
  565.       If(N*10)=T Then R=1
  566.    Next N
  567.    If R<19 Then AIM=20 : Goto FIN
  568.    If R>18 Then AIM=19 : If R=20 and O<3 Then AIM=50 : TM=1 : Goto FIN
  569.    Goto FIN
  570.    '
  571.    SKIPY:
  572.    '
  573.    If T<101 Then Goto OHNO
  574.    A=20 : N=20 : M=20 : AA=Rnd(6+Rnd(2)) : TM=2
  575.    '
  576.    If UF>13 Then N=50 : TM=1
  577.    If T>170 Then GT=40
  578.    If T>170 and UF=14 Then GT=50
  579.    If T<171 Then GT=0
  580.    DI=51
  581.    TI=3 : AD=9
  582.    Do 
  583.       Repeat 
  584.          If N=49 Then N=20 : TM=2
  585.          If T-((M*3)+(N*TM)+(A*TI))=GT Then AIM=M : TM=3 : Goto FIN
  586.          A=A-1 : If A=0 Then A=20 : M=M-1 : If M=6 Then M=20 : N=N-1
  587.       Until N=AA
  588.       Inc AD
  589.       If AD=10 Then A=0 : Dec DI
  590.       N=20 : A=20 : M=20
  591.       If DI=49 Then DI=20
  592.       If DI<50 Then GT=DI*2
  593.       GT=GT+AD
  594.       If DI=AA Then Goto OHNO
  595.    Loop 
  596.    '
  597.    '
  598.    OHNO:
  599.    N=20 : M=20 : AA=0 : TI=2 : TM=1 : H=Rnd(15)
  600.    '
  601.    F=0
  602.    If UF>10 and PF=1 and D=1 Then N=50
  603.    If UF>14 or T=110 Then N=50 : F=30
  604.    Do 
  605.       If N=49 Then N=20 : TI=2
  606.       If N=50 Then TI=1
  607.       If T-((N*TI)+(M*TM))=0 Then AIM=M : Goto FIN
  608.       Dec M : If M=0 Then M=20 : Dec N
  609.       If H<14 and N=AA and TM=1 Then TM=4
  610.       If H<14 Then If N=AA and TM=2 Then Goto SKIPY1
  611.       If H<14 Then If N=AA Then N=20+F : Dec TM
  612.       If H>13 Then If N=AA and TM=3 Then Goto SKIPY1
  613.       If H>13 Then If N=AA Then N=20+F : Inc TM
  614.    Loop 
  615.    '
  616.    SKIPY1:
  617.    FIN:
  618.    If AIM=50 Then TM=1
  619.    If T-(AIM*TM)>0 and AIM*TM<21 Then AIM=AIM*TM : TM=1
  620.    If AIM=0 Then AIM=Rnd(19)+1 : Boom 
  621.    'Print At(0,1);"           " 
  622.    'Locate 0,1 : Input "Aim:";AIM 
  623.    'Print At(0,2);"           " 
  624.    'Locate 0,2 : Input "Times:";TM
  625.    If AIM=6 Then CD#=351+9
  626.    If AIM=13 Then CD#=9+9
  627.    If AIM=4 Then CD#=27+9
  628.    If AIM=18 Then CD#=45+9
  629.    If AIM=1 Then CD#=63+9
  630.    If AIM=20 Then CD#=81+9
  631.    If AIM=5 Then CD#=99+9
  632.    If AIM=12 Then CD#=117+9
  633.    If AIM=9 Then CD#=135+9
  634.    If AIM=14 Then CD#=153+9
  635.    If AIM=11 Then CD#=171+9
  636.    If AIM=8 Then CD#=189+9
  637.    If AIM=16 Then CD#=207+9
  638.    If AIM=7 Then CD#=225+9
  639.    If AIM=19 Then CD#=243+9
  640.    If AIM=3 Then CD#=261+9
  641.    If AIM=17 Then CD#=279+9
  642.    If AIM=2 Then CD#=297+9
  643.    If AIM=15 Then CD#=315+9
  644.    If AIM=10 Then CD#=333+9
  645.    ' Print At(0,BB);"         " 
  646.    'Print At(0,5);"         " 
  647.    ' Print At(0,BB);"A=";AIM*TM 
  648.    CR=Rnd(76)
  649.    SI=OP+BB : 
  650.    RS=Rnd(15-SI)
  651.    RY=Rnd(15-SI)
  652.    R2=(15-RS)
  653.    'Print At(0,5);SI
  654.    If TM=3 Then CR=41+Rnd(7)
  655.    If TM=2 Then CR=70+Rnd(7)
  656.    P=Rnd(10)
  657.    '
  658.    '
  659.    If TM=1 and P<10 Then CR=59+((-12+R2)+(Rnd(24-R2-R2)))
  660.    If TM=1 and P>9 Then CR=25+((-16+R2)+(Rnd(32-R2-R2)))
  661.    '   If TM=1 and P<10 Then CR=47+Rnd(24)
  662.    '   If TM=1 and P>9 Then CR=9+Rnd(32)
  663.    If AIM=50 Then CR=Rnd(4)
  664.    If AIM=25 Then CR=Rnd(9)+4
  665.    Degree 
  666.    CX=CR*(Cos(CD#))
  667.    CY=CR*(Sin(CD#))
  668.    CX=CX+100
  669.    CY=107-CY
  670.    RX=(RS)
  671.    RY=(RY)
  672.    AA=Rnd(1)
  673.    If AA=1 Then CX=CX+RX : CY=CY+RY
  674.    If AA=0 Then CX=CX-RX : CY=CY-RY
  675. End Proc